home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // FilmUP (IT) import
-
- (**************************************************
- * Movie importation script for: *
- * FilmUP (IT), http://www.filmup.com *
- * *
- + Original: L. Francisco *
- * Modified: Pivello: query URL changed *
- * Modified: Zandal: sistenato puntamento a *
- * COMMENTS *
- * Modified: Pivello: Film site URL selectable *
- * instead of FilmUp page URL *
- * *
- * *
- * For use with Ant Movie Catalog 3.4.1 *
- * www.ant.be.tf/moviecatalog *
- * *
- * The source code of the script can be used in *
- * another program only if full credits to *
- * script author and a link to Ant Movie Catalog *
- * website are given in the About box or in *
- * the documentation of the program *
- ***************************************************)
-
- program FilmUP;
-
- const
- AltURL = False; // - Set to true if film web site needed for FieldURL (FilmUp
- // page URL is already taken if film web site not found)
- // - Set to false for FilmUp page URL
- var
- MovieName: string;
- TheMovieAddress: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: integer;
- BeginPos: integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- LineNr := FindLine('<title>FilmUP - Cerca: ', Page, 0);
- if LineNr = -1 then
- begin
- SetField(fieldURL, Address);
- AnalyzeMoviePage(Page);
- end
- else
- begin
- PickTreeClear;
- AddMoviesTitles(Page);
- if TheMovieAddress='' then
- begin
- if PickTreeExec(Address) then AnalyzePage(Address);
- end
- else
- begin
- SetField(fieldURL, TheMovieAddress);
- Page.Text := GetPage(TheMovieAddress);
- AnalyzeMoviePage(Page);
- end;
- end;
- Page.Free;
- end;
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Line: string;
- NomeHtml: string;
- LineNr,PrevLineNr: Integer;
- BeginPos, EndPos: Integer;
- Field: integer;
- begin
- LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0);
- if LineNr > -1 then
- begin
- //Translated Title
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
- SetField(fieldTranslatedTitle, Line);
-
- repeat
- //Look for next info
- repeat
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
- until Line<>'';
-
- //Look for type of line
- if Line = 'Titolo originale: ' then
- Field := fieldOriginalTitle
- else if Line = 'Regia: ' then
- Field := fieldDirector
- else if Line = 'Produzione: ' then
- Field := fieldProducer
- else if Line = 'Nazione: ' then
- Field := fieldCountry
- else if Line = 'Genere: ' then
- Field := fieldCategory
- else if Line = 'Anno: ' then
- Field := fieldYear
- else if Line = 'Durata: ' then
- Field := fieldLength //Special case: get number only
- else if Line = 'Sito ufficiale: ' then
- Field := fieldURL
- else if Line = 'Cast: ' then
- Field := fieldActors
- else if Line = 'Trama:' then
- Field := fieldDescription
-
-
- else
- Field := 0;
-
- // I have to add this test, for sometimes the description
- // is on the same line as the tag 'Trama'
- if (copy(Line,1,6)='Trama:') and (length(Line)>6) then
- begin
- Field := fieldDescription;
- Delete(Line,1,6);
- HTMLDecode(Line);
- end
- else
- begin
- //Get values
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
- HTMLDecode(Line);
-
- //Special case: Length
- if Field = fieldLength then Line := copy(Line,1,length(Line)-1);
- end;
-
- //Alternative URL case
- if (field = fieldURL) and AltURL then
- begin
- if Length(Line) = 0 then // if WEB url missing...
- Line := GetField(fieldURL) // ...restore FilmUp URL
- else
- Line := 'http://'+Line;
- end;
-
- if Field<>0 then SetField(Field,Line);
-
- until Field=fieldDescription;
- end;
-
- PrevLineNr := LineNr;
-
- //Comments
- LineNr := FindLine('">Recensione</a>', Page, PrevLineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line));
- if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line));
- Delete(Line,1,pos('<a href="',Line)+8);
- NomeHtml :=Copy(Line,1,pos('"',Line)-1);
- if (copy(NomeHtml,1,1)<>'/') then
- begin
- NomeHtml := '/' + NomeHtml;
- end;
- GetComments('http://www.filmup.com'+NomeHtml);
- PrevLineNr := LineNr;
- end;
-
- //Rating
- LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- Delete(Line,1,pos('Recensione',Line));
- Delete(Line,1,pos('<a href="',Line)+8);
-
- Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="/img/star/');
- if Line <> '' then
- begin
- Line := Copy(Line,1,pos('</b> - <img src="/img/star/',Line)-1);
- if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1);
- SetField(fieldRating,Line);
- end;
- PrevLineNr := LineNr;
- end;
-
- //Picture
- LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr);
- if LineNr = -1 then
- begin
- LineNr := FindLine('<img src="locand/', Page, PrevLineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- Delete(Line,1,pos('<img src="locand/', Line)+9);
- GetPicture('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1), False);
- end;
- end
- else
- begin
- Line := Page.GetString(LineNr);
- Delete(Line,1,pos('<a href="posters/locp/',Line)+8);
- Line := GetLineFromOtherPage('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/');
- if Line <> '' then
- begin
- Delete(Line,1,pos('<img src="../',Line)+12);
- GetPicture('http://www.filmup.com/posters/'+Copy(Line,1,pos('"',Line)-1), False);
- end;
- end;
- DisplayResults;
- end;
-
- function GetLineFromOtherPage(address: string; hint: string): string;
- var
- Page: TStringList;
- LineNr: integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- LineNr := FindLine(hint, Page, 0);
- if LineNr > -1 then result := Page.GetString(LineNr);
- Page.Free;
- end;
-
- procedure GetComments(address: string);
- var
- Page: TStringList;
- BeginLine: integer;
- EndLine: integer;
- i: integer;
- Line, Comments: string;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- BeginLine := FindLine('RECENSIONI', Page, 0);
- BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine);
- EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine);
- for i:= BeginLine+1 to EndLine-1 do
- begin
- Line := Page.GetString(i);
- Line := StringReplace(Line, '<br>', #13#10);
- Line := StringReplace(Line, #13#10#32, #13#10);
- HTMLRemoveTags(Line);
- HTMLDecode(Line);
- Comments := Comments + Line;
- end;
- SetField(fieldComments, Comments);
- Page.Free;
- end;
-
- procedure AddMoviesTitles(Page: TStringList);
- var
- LineNr: Integer;
- Line: string;
- MovieTitle, MovieAddress: string;
- BeginPos, EndPos: Integer;
- begin
- LineNr := 0;
- LineNr := FindLine('FilmUP - Scheda:',Page,LineNr);
- while LineNr > -1 do
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('<a href="',Line)+9;
- EndPos := pos('" TARGET="_blank"><b>FilmUP - Scheda: ',Line);
- MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
- Delete(Line,1,EndPos);
- BeginPos := pos('Scheda: ',Line)+8;
- EndPos := pos('</a>',Line);
- MovieTitle := copy(Line,BeginPos,EndPos-BeginPos);
- HTMLRemoveTags(MovieTitle);
- HTMLDecode(Movietitle);
- LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1);
- PickTreeAdd(MovieTitle, MovieAddress);
-
- if TheMovieAddress='*' then
- TheMovieAddress := MovieAddress
- else
- TheMovieAddress := '';
- end;
- LineNr := FindLine('Successivo',Page,LineNr);
- Line := Page.GetString(LineNr);
- BeginPos := pos('HREF',Line);
- if BeginPos>0 then
- begin
- Delete(Line,1,BeginPos + 5);
- EndPos := pos('"',Line);
- MovieAddress := copy(Line,1,EndPos-1);
- PickTreeMoreLink('http://www.filmup.com'+MovieAddress);
- end;
- if TheMovieAddress='*' then TheMovieAddress := '';
- end;
-
- // -----------------------------
- // Questo Φ il main dello script
- // -----------------------------
- begin
- if CheckVersion(3,4,1) then
- begin
- TheMovieAddress := '*';
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then
- begin
- AnalyzePage('http://www.filmup.com/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25');
- end;
- end
- else
- ShowMessage('Questo script richiede una versione pi∙ nuova di Ant Movie Catalog (almeno la versione 3.4.1)');
- end.
-